package ast

import "kumachan/interpreter/lang/common/source"


type Node struct {
	Location  source.Location
}
func NodeFromLocation(loc source.Location) Node {
	return Node { Location: loc }
}

func IterateNodeRegistry(f func(interface{})) {
	for _, node := range nodeRegistry {
		f(node)
	}
}
var nodeRegistry = [...] interface{} {
	Root {},
	ReplRoot {},
	ReplAssign {},
	ReplRun {},
	ReplEval {},
	VariousStatement {},
	DeclEntry {},
	DeclType {},
	Identifier {},
	Doc {},
	RefBase {},
	VariousTypeDef {},
	NativeTypeDef {},
	Interface {},
	Method {},
	Record {},
	RecordDef {},
	Field {},
	Union {},
	VariousUnionItem {},
	UnionItemDefConst {},
	UnionConstDef {},
	UnionItemUseType {},
	DeclOperator {},
	OperatorSignature {},
	Inputs {},
	VariousBody {},
	NativeBody {},
	Block {},
	DeclMethod {},
	DeclConst {},
	DeclMessage {},
	VariousMsgExpr {},
	MsgExprPlain {},
	MsgExprSingularPlural {},
	Type {},
	Ref {},
	Expr {},
	Cast {},
	VariousTerm {},
	VariousPipe {},
	VariousPipeCall {},
	CallOrdered {},
	CallUnordered {},
	ArgumentMapping {},
	PipeUfcs {},
	PipeCast {},
	PipeGet {},
	PipeInterior {},
	InfixTerm {},
	Lambda {},
	If {},
	ElIf {},
	When {},
	Branch {},
	BranchPattern {},
	VariousPattern {},
	PatternSingle {},
	PatternMultiple {},
	VariousBinding {},
	BindingPlain {},
	BindingCps {},
	RefTerm {},
	CharLiteral {},
	IntegerLiteral {},
	FloatLiteral {},
	StringLiteral {},
	Text {},
	VariousStringPart {},
	StringPartContent {},
}


